нет, конвертации напрямую нет. я что-то слышал в прошлом про баг с сохранением fogmodifier в хештаблицу, но деталей не знаю, можешь проверить то направление.
ну и мемхак, на крайняк, офк.
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.
Nelloy, будет но для этого данные нужно синхронизировать, для ваших сейв\лоадов есть давно проверенная система, которая не требует мемхака - Data Manager, не надо никакого мемхака. Все понятно и просто, вот неужели нельзя изучить всю мат часть по сейвам прежде чем пороть горячку?
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ОЖИВИТЬ юнита, который не явзяется ГЕРОЕМ - невозможно, по стредствам триггеров.
Можно лишь создать ещё одного ТОЧНО такого же, без излишеств (бонусы, абилки, айтемы - ничего не сохранится, т.к. это новый юнит).
А вот героев можно
Я вроде бы пробовал воскрешать той же функцией обычных юнитов - ничего не получалось (могу ошибаться).
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
Я в свое время делал так:
Первая способность - пассивка, на которую, соответственно, нажать нельзя. Вторая - на основе одной из активок, не сбивающих текущий приказ, с пассивной иконкой и с заданным временем перезарядки. А дальше танцы с бубном и подменой способностей - пока перезарядка не нужна - выдаем пассивку, когда срабатывает эффект - убираем пассивку и выдаем активку, отдаем приказ на ее активацию, по истечении времени перезарядки - забираем активку и возвращаем пассивку, еще полезно отслеживать ситуации когда активка не может быть применена или добиться того чтобы ее можно было применить в любом состоянии кроме смерти.
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
При конвертации моделей из игр в MDX их вес велик как и вес их текстур ! Я оптимизирую и сжимаю модель через MDLvis а текстуры через BLP Laboratory но их вес все еще внушителен ( Есть ли другие варианты среза веса без дефектов материала ?
Нет. Только удаление лишних анимаций. Остальную оптимизацию веса сделает mdlvis.
При импорте некоторых моделей в карту возникает проблема с их выбором при манипуляции ( Передвижения ) словно их Выбор отсутствует , Думаю некоторые с подобным сталкивались ...
Если модель нельзя выделить в игре курсором, у неё отсутствуют collision shapes (формы коллизии). Их можно добавить в War3ModelEditor -> Окна -> Редактор узлов -> правый клик -> Создать форму - > отредактировать размеры и положение. Их можно добавить несколько, чтобы покрыть модель целиком. Они отвечают за взаимодействие модели с курсором.
Один ресурс - один вопрос, после пойдут замечания.
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
Много воды разлито. Пиши конкретней. Вообщем если тебе нужна способность, которая будет блочить спеллы юнита. То у повелителя огня есть такая, и вторая есть у Тёмной Охотницы - это Безмолвие. Вообще проще пареной репы.
Кстати на заметку. Безмолвие тёмной охотницы можно сделать так, что бы блокировало не способности а Атаку например, подобие Тумана Ястребов, хотя и туман можно для этого использовать, если кому нужно блочить атаку врага, разрешённые цели сменить у тумана и будет то что нужно.
нужно блочить не все спелы, а конкретные
Вобщем, как я понял, то что я хочу сделать, нельзя сделать, закрываю вопрос
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
8gabriel8, приоритет менять нельзя
стандартный ии использует это поле для контроля юнитов
пишем свой ии в котором вместо приоритета юзаем свою переменную которой можем задавать любое значение 8gabriel8:
Но для меня это путь в Москву через Владивосток
ну если между тобой и Москвой находится Владивосток то иначе никак(а вар3 как раз расположен за Владивостоком)
Если способность имеет свой идентификатор приказа, то сделай активацию способности триггерно путем отдачи приказа типа цель-точка, где точку можно взять в твоем случае как координаты юнита-цели. Должно сработать.
потому что приказ у юнита должен быть attack, иначе не запускается проверка. вот так криво сделали, да
attackonce существует только для локустов и не предназначен для использоваиня игроком, по сути, под него скиллы не рассчитаны
Лучше вообще не юзать улучшения, они очень не очень, и не только потому, что не откатываются.
С многоуровневыми улучшениями вообще десинки иногда ловились в некоторых ситуациях (лень искать, но пруфы были).
Есть же способы повысить хп...
Понятно что можно, но если это самый легкий и менее ресурсо-затратный способ повысить ХП всем нужным юнитам, что же мне теперь проверять всех вновь созданных юнитов и повышать им HP триггерно через добавление скилла?
Получается, что так. Системы для такого повышения ХП есть, например здесь: xgm.guru/p/wc3/bpe
ну вот в чём твоя ошибка: Ты изменил название текстуры, а значит ты изменил и пути, тебе нужно зайти в war3modelEditor и там уже открыв модель выбрать вкладку: Windows=>Texture Manager, где будет список текстур, ты удаляешь 1 старую текстуру, которая у тебя была и добавляешь новую, при этом модель с текстурой должны лежать в одной папке, которая не содержит кириллицы (например путь должен быть d:\Users\User\Desktop\moroz - без русских букв ).
Переименовать новую текстуру на старую по идее не имеет смысла, потому что опять же ты сохранил её без текстуры, а => испоганил, накосячил, сломал (называй как хочешь).
Последний созданный юнит — это глобальная переменная. Скорее всего когда Вы обращаетесь к ней, то там находится не то значение, которое вы ожидаете. Используйте локальные переменные.
Maxsavin, молодые, зеленые, все то вам объяснять надо.
Берете карту, делаете копию, вычищаете из неё триггер за триггером, юнита за юнитом, кусочек карты за кусочком, пока либо не пройдет баг, либо в карте не останется ничего, что бы вы не были готовы показать. Да, проверять надо после каждого удаления, а не удалять все скопом. Да, это долго, но другого способа нет.
В первом случае (баг прошел после очередного удаления) - причина найдена и можно детально исследовать.
Во втором случае (удален весь "секретный" контент, а баг остался) - можно смело показывать карту и просить помощи.
P.S. главное не забыть, что удалять надо из копии карты, а не из единственного существующего исходника. Ответственности за потерю единственной рабочей версии в результате неправильного использования этого метода не несу.
по идее нужно создать буленовскую переменную и как только наступило 20 минут ставить её на false
а в 30 минут ставить на true
и везде где отдаётся приказ на атаку нужно прописать условие
if(myBoolean){
... // тут команда атаковать
}
это если редактировать основной ai файл
можно и по другому
проверять условие что аи пошёл атаковать и возвращать его на базу
А не проще в способности оглушающей ловушки Орды в РО поменять графику - вместо спирали установить сеть и поменять точку крепления к цели?
В принципе, можно таким же способом поменять способность "Замедление", которая у людей.
Причём замедление поставить на 100%, а время - 2 сек.
Отловить автокаст по баффу активирующего юнита и триггерно взорвать юнит-мину.
Или ещё проще - отловить применение способности по количеству маны.
А то ловушка Орды бьёт по области, а не по юниту.
нет, только с помощью мемхака (и то я не тестил с генерацией всякого, будут ли совпадать, но функция та же, что используется в игре при загрузке карты)
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Talgar2, так путь задай неактивной ReplaceableTextures\CommandButtonsDisabled\DISBTNAbilDoubleStrike.blp. Но вообще мне кажется, что ты чего-то в РО не так сделал, так как неактивная иконка нужна во время пауз, например, когда меню открываешь. Скинь лучше карту с этой способностью и иконками.
а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
Ну а чего полностью не сделать кастом Iplate ? Эта багнутая абилка, она делает юнитов на мгновение неуязвимыми - вот они и не получают урона.
Подбрасывай юнитов триггерно, оглушение - молот бурь, ну и наноси сколько влезет урона.
Рук с одного места расстут, чтоб подкидывать и все эффекты настраивать( как лучше всего такое реализовать?Если триггерно неуязвимость снимать перед дмг?
Исправил так, В РО юниты в воздухе 1с, добавил таймер на 1с для нанесение дмг.
function Trig_PD_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A012'
endfunction
function BuffPD takes nothing returns boolean
return GetUnitAbilityLevel(GetFilterUnit(), 'B006') > 0 == true
endfunction
function DamagePD1 takes nothing returns nothing
timer t = GetExpiredTimer()
integer b = GetHandleId(t)
real i = LRh(b,2)
unit u1 = LUh(b,1)
unit u =LUh(b,0)
call SetUnitInvulnerable(u,false)
call UnitDamageTarget(u1,u,i,true,true,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,null)
DestroyTimer(t)
t = null
u = null
u1 = null
endfunction
function DamagePD takes nothing returns nothing
integer a = GetHandleId(gg_trg_PD)
group g = LGh(a,0)
real i = LRh(a,2)
unit u1 = LUh(a,1)
unit u = GetEnumUnit()
if IsUnitInGroup(u,g) == false then
timer t = CreateTimer()
integer b = GetHandleId(t)
GroupAddUnit(g,u)
SGh(a,0,g)
SUh(b,0,u)
SUh(b,1,u1)
SRh(b,2,i)
TimerStart(t,1,false,function DamagePD1)
endif
u = null
u1 = null
g = null
endfunction
function TimerPD takes nothing returns nothing
integer a = GetHandleId(gg_trg_PD)
unit u = LUh(a,1)
group g = LGh(a,0)
timer t = GetExpiredTimer()
group g1 = CreateGroup()
location l = GetUnitLoc(u)
integer i = LIh(a,3)+1
SIh(a,3,i)
GroupEnumUnitsInRangeOfLoc(g1,l,900,Condition(function BuffPD))
ForGroup(g1,function DamagePD)
if i == 20
DestroyTimer(t)
DestroyGroup(g)
FlushChildHashtable(udg_hash,a)
endif
DestroyGroup(g1)
RemoveLocation(l)
g = null
g1 = null
u = null
t = null
l = null
endfunction
function Trig_PD_Actions takes nothing returns nothing
unit u = GetSpellAbilityUnit()
D(GetUnitName(u))
integer a = GetHandleId(gg_trg_PD)
real i = GetUnitAbilityLevel(u,'A012')*0.25*GetHeroStr(u,true)+0.5*GetHeroStr(u,true)
group g = CreateGroup()
timer t = CreateTimer()
SGh(a,0,g)
SUh(a,1,u)
SRh(a,2,i)
TimerStart(t,0.02,true,function TimerPD)
u = null
g = null
t = null
endfunction
//===========================================================================
function InitTrig_PD takes nothing returns nothing
set gg_trg_PD = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_PD, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_PD, Condition( function Trig_PD_Conditions ) )
call TriggerAddAction( gg_trg_PD, function Trig_PD_Actions )
endfunction
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
Она должна быть в корневой папке варкрафта, лично у меня так. Попробуй переместить если она отдельно. Или скачай заново, может какойнибудь файл пропал, всякое бывает, вирусы там и тд
Но ведь сами по себе ошибки не происходят.
Причина подобного это А) - невнимательность либо твоя либо автора В) - программное обеспечение
Что бы в дальнейшем все было окей, просто сначала потести карту полностью что бы знать что и как должно быть, а потом вноси изменения, будь внимательней.
Еще советую связаться с автором и поговорить с ним об этой проблеме, или запросить у него еще 1 исходник да бы сверЯться с ним.
Там всё решено. Скинул одному человеку с обычным эдитором - у него все норм. Решил вопрос, ресетнув эдитор, а затем сбросив высоту декораций и подняв заново всё что нужно. Больше такого не наблюдалось.
Просто скопировать путь к модели у декорации - не выход, т.к. декорация имеет вариации, юниты - нет. Хотя если прописать конкретную вариацию декорации а не разрушаемого объекта - то отображается. Кажется в декорациях есть парочка деревьев.
Sprite - крепление для эффекта огня, который появляется при повреждениях, если модель используется для здания или для юнита, классифицируемого в РО как механический.
A) Текстуру модели бросил с правильным путем в папку вара а в карту не импортировал или не изменил путь на правильный
Б) Если дерево стандартное то у него много вариаций а модель теперь другая без вариаций (???)
Используй вот это, чтобы вытащить UI, потом вот этим конвертируешь в нужный формат, чтобы открыть в PS.
Русскоязычных статей по созданию UI не нашёл, но если знаешь английский, вот ссылка.
» WarCraft 3 / constant function
» WarCraft 3 / PreloadAbility( integer )
» WarCraft 3 / Воскрешение декораций
» WarCraft 3 / Проблема с ИИ
» Администрация XGM / Утверждение проекта
» WarCraft 3 / Как сделать пассивку с перезарядкой?
» WarCraft 3 / Триггер
» WarCraft 3 / Как оптимизировать карту?
» WarCraft 3 / Немота
» WarCraft 3 / Октарин
» WarCraft 3 / Приоритет атаки
» WarCraft 3 / Сфера Молний
» WarCraft 3 / Вылетает World Editor
» WarCraft 3 / Проблема с текстурой
» WarCraft 3 / Панель приказов
» WarCraft 3 / Триггерная мина
» WarCraft 3 / Большая проблема
» WarCraft 3 / Почему иконка зеленая?
» WarCraft 3 / Система диалогов
» WarCraft 3 / Тригерный спелл
» WarCraft 3 / Система атрибутов
» WarCraft 3 / Переведите
» WarCraft 3 / Не отображается декорация
» WarCraft 3 / Зад интерфейса